\chapter{An\'alisis}

\label{analisis}

\section{Introducci\'on}
El an\'alisis toma los requerimientos del sistema a desarrollar y produce una soluci\'on inicial, la cual es tomada como entrada al dise\~no para la posterior elaboraci\'on de una especificaci\'on que pueda ser f\'acilmente implementada. El an\'alisis llega a su fin cuando representa los requerimientos del sistema de manera consistente.\\
El an\'alisis se centra en el comportamiento, no en la forma. El an\'alisis mira al mundo identificando los elementos que forman parte del problema, describiendo sus roles, colaboraciones y responsabilidades. La importancia del an\'alisis radica en que el mismo tendr\'a un impacto directo en la robustez y comprensi\'on del dise\~no y har\'a una divisi\'on balanceada de las responsabilidades de los componentes del sistema.
\cite{AnalysisAndDesign}

\section{Descripci\'on del problema}
\label{DescripcionProblema}
Teniendo en cuenta que en la terapia contra el \textit{VIH} es necesaria una aplicaci\'on combinada de antirretrovirales resulta \'util contar con un m\'odulo dotado de funcionalidades capaz de manipular eficientemente la relaci\'on entre un conjunto de mutantes y el conjunto de antirretrovirales. Para esto, se debe determinar cu\'ales son las combinaciones posibles de dichos antirretrovirales y luego calcular cu\'ales de \'estos son aplicables a cada mutante. Adem\'as ser\'a necesario determinar a partir de un subconjunto de antirretrovirales que se aplican a una secuencia del virus, cu\'ales son las mutantes resultantes. 

\subsection{Mutante}
Una mutante es una secuencia de \textit{ARN} del virus representada como una secuencia de Amino\'acidos o una secuencia de Nucle\'otidos.\\
Un amino\'acido puede ser codificado por uno o m\'as codones como se muestra en la figura \ref{fig:CodigoGenetico}. Este mapeo entre codones y amino\'acidos se denomina C\'odigo Gen\'etico.

\begin{figure}[htb]
\centering
\includegraphics[width=0.8\textwidth]{./Imagenes/CodigoGenetico.jpg}
\caption{C\'odigo Gen\'etico. Fuente: commons.wikimedia.org}
\label{fig:CodigoGenetico}
\end{figure}

\pagebreak

\subsection{Representaci\'on de una mutante en \textit{LAV}}
Actualmente en \textit{LAV}, una mutante es representada como una cadena de nucle\'otidos.

\begin{itemize}
\item \textit{Secuencia de Nucle\'otidos:\\}CCCATTAGCCCTATTGAGACTGTACCAGTAAAATTAAAGCCAGGAAT...
\end{itemize}

\subsection{Representaci\'on de Antirretrovirales en \textit{LAV}}
La nueva representaci\'on de Antirretrovirales utilizada en este trabajo contiene la noci\'on de grupo junto con su peso m\'inimo(\textit{peso\_min}). En lo que respecta a las resistencias, en la nueva representaci\'ion, aparece la noci\'on de peso continuo(\textit{peso}) que va a permitir modelar el hecho de que existen posiciones de resistencias en los Antirretrovirales que ofrecen m\'as resistencia que otras\footnote{http://lav.googlecode.com/hg\-history/documentationAProba/doc/Thesis/Thesis\_AProba/Report/Tesis.pdf}.\\

\label{representacionARVs}
Actualmente en \textit{LAV} los Antirretrovirales son representados de la siguiente manera:

\begin{center}
\textit{ARV} = \{ $grupo_{1}$, $grupo_{2}$, ... , $grupo_{n}$ \} \\
\end{center}

donde,

$grupo_{i}$ = \{ \textit{peso\_min, lista\_de\_resistencias} \} $\forall i:1 \leq i \leq n$

\textit{peso\_min} es un n\'umero real que representa el peso que debe cumplir una combinación de elementos de \textit{lista\_de\_resistencias} para poder ser considerada en la ge\-ne\-ra\-ción de secuencias mutantes.\\

\textit{lista\_de\_resistencias} = \{ ($pos_{1}$, $amin_{1}$, $peso_{1}$), ... , ($pos_{n}$, $amin_{n}$, $peso_{n}$) \}

$pos_{i}$ = Posici\'on dentro de la secuencia de virus.\\
$amin_{i}$ = Amino\'acidos que se pueden aplicar en la posici\'on $pos_{i}$.\\
$peso_{i}$ = Valor que expresa la resistencia de $amin_{i}$ en la posici\'on $pos_{i}$.\\

Adem\'as, se incluye otro tipo de informaci\'on para un antirretroviral, como un identificador, un nombre, un tipo y una clase.

\subsection{Aplicaci\'on de un Antirretroviral}
\label{AplicacionAntirretroviral}
Para aplicar un antirretroviral a una secuencia hay que garantizar que: En cada posici\'on de la
secuencia correspondiente a la posici\'on de resistencia del antirretroviral, no coincida el amino\'acido de la secuencia con ninguno de los amino\'acidos de la resistencia.\\
Dado que un antirretroviral est\'a compuesto de un grupo de resistencias, tomemos como ejemplo el siguiente antirretroviral que tiene como una de sus resistencias a \textbf{VI} en la posici\'on \textbf{65} y a \textbf{F} en la posici\'on \textbf{184}.

\begin{figure}[htb]
\centering
\includegraphics[width=0.9\textwidth]{./Imagenes/Secuencia_Resistencia.jpg}
\caption{Aplicaci\'on de un Antirretroviral.} \label{fig:Secuencia_Resistencia}
\end{figure}

Teniendo en cuenta la Fig. \ref{fig:CodigoGenetico} obtenemos la codificaci\'on de los amino\'acidos a tripletes de nucle\'otidos:
\begin{itemize}
\item Amino\'acido \textbf{V} \textit{(Val)}: GTT, GTC, GTA, GTG.
\item Amino\'acido \textbf{I} \textit{(Ile)}: ATT, ATC, ATA.
\item Amino\'acido \textbf{F} \textit{(Phe)}: TTT, TTC.
\end{itemize}

Si comparamos cada posici\'on de resistencia con la misma posici\'on en la secuencia (Fig.\ref{fig:Secuencia_Resistencia}), puede observarse que no existe coincidencia, con lo cual, el antirretroviral aplica a la secuencia.\\

\section{An\'alisis de Librer\'ias y Dependencias Externas}
En este cap\'itulo nombraremos las dependencias externas y librer\'ias utilizadas por el proyecto \textit{LAV}. Adem\'as de las bibliotecas STL (Standard Template Library) de C++, \textit{LAV} depende de otros proyectos pertenecientes a FUDEPAN:
\begin{itemize}
\item \textbf{Biopp}: Esta Librer\'ia sirve de base para los proyectos de estructura de prote\'inas. Se define program\'aticamente la representaci\'on de prote\'inas, \'atomos, amino\'acidos y formas espaciales que pueden adoptar una prote\'ina. As\'i como tambi\'en algunas relaciones que se pueden establecer entre estos elementos. B\'asicamente puede considerarse un compendio de c\'omo se interpreta la faceta biol\'ogica y molecular en los proyectos asociados \footnote{biopp.googlecode.com}.

\item \textbf{MiLi}: MiLi es un conjunto de librer\'ias \'utiles generales de C++ compuesta \'unicamente de archivos ``.h''; que cumple con la filosof\'ia de ``C++ es un lenguaje de dos caras'', ya que encapsula complejidad del mismo ofreciendo simplicidad al usuario.\\
MiLi significa Minimalistic Libraries (Librer\'ias Minimalistas) porque est\'a enfocada en la simpleza de su incorporaci\'on en proyectos y facilidad de uso \footnote{http://mili.googlecode.com/}.

\item \textbf{Fx-parser}: FXP es un parser XML de alto nivel para C++. De hecho, FXP es un adaptador de datos que se sit\'ua por encima de un parser SAX (Simple API for XML Parsing). Utilizado para parsear el archivo .xml que contiene la base de datos de antivirales \footnote{fx-parser.googlecode.com}.

\end{itemize}
